<?php
	require_once PATH_OBJECT.'dataObject.php';
	
class dataObject_formule extends dataObject
{

	/* @desc    Identifiant de la formule
     * @var     int
     */
    public $_IDENTIFIANT_FORMUL = 0;
    
    
	/* @desc    Identifiant de la formule
     * @var     int
     */
    public $_CODE_FORMUL = '';
    
    
	/* @desc    Identifiant de la formule
     * @var     int
     */
    public $_LIBELLE_FORMUL = '';
    
    
	/* @desc    Identifiant de la formule
     * @var     int
     */
    public $_DATE_DEBUT_FORMUL = '';
    
    
	/* @desc    Identifiant de la formule
     * @var     int
     */
    public $_DATE_FIN_FORMUL = '';
    
    
	/* @desc    Identifiant de la formule
     * @var     int
     */
    public $_IDENTIFIANT_PRODUIT  = 0;
	
    
	public function __construct( $iId=0 )
    {
       parent::__construct();

       if ( $iId != 0 )
       {
            $sQuery = "SELECT   *   /*+ dataObject_formule::__construct */  
                       FROM formule 
            		   WHERE Identifiant_formule  = ".$iId." ORDER BY Libelle_formule";;
            
            $aRows =  self::$_oConnexion->query($sQuery);
			$aRow = $aRows[0];
                 
			$this->_IDENTIFIANT_FORMUL = $iId;
			$this->_CODE_FORMUL = $aRow["Code_formule"];
			$this->_LIBELLE_FORMUL = $aRow["Libelle_formule"];
			$this->_DATE_DEBUT_FORMUL = self::showDate($aRow["Date_debut_formule"]);
			$this->_DATE_FIN_FORMUL= self::showDate($aRow["Date_fin_formule"]);
			$this->_IDENTIFIANT_PRODUIT = $aRow["Identifiant_produit"];

			
       }
    }
    /**
     * récupere la table formule selon le(s) criter(s) précisés ou pas 
	 */
    function formule_select( $sCritere = null )
    {
        $aRow = false;
    	$sQuery = "SELECT   *    
                   FROM formule 
            	   WHERE 1=1 
            	   {$sCritere} ";
            	  
        $aRow =  self::$_oConnexion->query($sQuery);

        return $aRow;
    }
    
	public function formule_getListFormuleOuvert($idProduit, $sDateLimite)
    {
        $aRow = false;
    	$sCritere = " AND ( Date_fin_formule is NULL or Date_fin_formule >= ".self::$_oConnexion->date($sDateLimite).")
    				 AND Identifiant_produit = $idProduit";
        $aRow =  $this->formule_select ($sCritere);
        
        return $aRow;
    }
   
    /**
     * Récupérer le(s) montant(s) du tarif de base, le(s) taux du tarif de base 
     * et le(s) taux de frais d’échéance applicables à la date d’effet du contrat, 
     * pour la formule sélectionnée et la garantie souscrite
     */
    public function formule_getTarif($nIdContrat, $dDateEffet)
    {
		$sReqTarif = "SELECT DISTINCT /*+ formule_getTarif */ Identifiant_tarif,  
					t.Montant_tarif_base, 
					t.Taux_tarif_base, 
					t.Taux_echeance_mensuel,
					t.Taux_echeance_trimestriel,
					t.Taux_echeance_semestriel,
					t.Type_tarif,
					t.Identifiant_formule, t.Identifiant_garantie
			FROM tarif t,  
				garantiesouscrite garsous
			WHERE garsous.Identifiant_contrat = '".$nIdContrat."' 
			 AND (garsous.Identifiant_formule = t.Identifiant_formule) 
			 AND (t.Identifiant_garantie = garsous.Identifiant_garantie 
			      OR t.Identifiant_garantie  is NULL) 
			 AND (t.Date_fin_tarif >= '".$dDateEffet."' OR t.Date_fin_tarif is null)";

			$bIdT = self::$_oConnexion->query($sReqTarif);
			
		return $bIdT;
    }
    
    public function getTarifFormule($nIdFormule)
    {
    	$bIdT = false;
		$sReqTarif = "SELECT *
			FROM tarif
			WHERE Identifiant_formule =".$nIdFormule;
	
			$bIdT = self::$_oConnexion->query($sReqTarif);

		return $bIdT;
    }
    
/**
     * RETOUR 1 SI $date2 EST POSTÉRIEURE À $date1
     *
     * @param unknown_type $date1
     * @param unknown_type $date2
     * @return unknown
     */
    public function verifDatePosterieure($date1,$date2)
	{
		if(isset($date1) && isset($date2))
		{
			if($date1!="" && $date2!="")
			{
				$date1 = str_replace('/','-',$date1);
				$date2 = str_replace('/','-',$date2);
				$date1 = explode('-', str_replace(' ','',$date1));
				$date2 = explode('-', str_replace(' ','',$date2));
				if (is_numeric($date1[0]) && is_numeric($date2[0]))
				{
					if(($date2[2]>=$date1[2] ) && (is_numeric($date1[2]) && is_numeric($date2[2])))
					{
						if(($date2[1]>=$date1[1]) && (is_numeric($date1[1]) && is_numeric($date2[1])) && ($date2[1]<=intval(12)) && ($date1[1]<=intval(12)))
						{
							if($date1[1]==intval(2))
							{
								if(($date2[0]<=intval(31)) && ($date1[0]<=intval(29)))
									return true;
								else
									return false;
							}
							elseif($date2[1]==intval(2))
							{
								if(($date2[0]<=intval(29)) && ($date1[0]<=intval(31)))
									return true;
								else
									return false;
							}
							elseif($date1[1]==intval(4)||$date1[1]==intval(6)||$date1[1]==intval(9)||$date1[1]==intval(11))
							{
								if(($date2[0]<=intval(31)) && ($date1[0]<=intval(30)))
									return true;
								else
									return false;
							}
							elseif($date2[1]==intval(4)||$date2[1]==intval(6)||$date2[1]==intval(9)||$date2[1]==intval(11))
							{
								if(($date1[0]<=intval(31)) && ($date2[0]<=intval(30)))
									return true;
								else
									return false;
							}
							elseif(($date2[1]==$date1[1]) && ($date2[1]==intval(1)||$date2[1]==intval(3)||$date2[1]==intval(5)||$date2[1]==intval(7)||$date2[1]==intval(8)||$date2[1]==intval(10)||$date2[1]==intval(12)) )
							{
								if (($date2[0]<=intval(31) && $date1[0]<=intval(31)) && ($date2[0]>$date1[0]))
									return true;
								else
									return false;
							}
							elseif(($date1[1]==$date1[1]) && ($date1[1]==intval(1)||$date1[1]==intval(3)||$date1[1]==intval(5)||$date1[1]==intval(7)||$date1[1]==intval(8)||$date1[1]==intval(10)||$date1[1]==intval(12)) )
							{
								if (($date2[0]<=intval(31) && $date1[0]<=intval(31)) && ($date2[0]>$date1[0]))
									return true;
								else
									return false;
							}
							else
								return false;
						}
						else
							return false;
					}
					else
						return false;
				}
				else
					return false;
			}
			else
				return false;
		}
		else
			return false;
	}
	
	public function ajoutDate($date,$m,$j,$a)
	{
		$date=explode('-',$date); 
		return $datefin=date("d-m-Y", mktime(0, 0, 0, $date[1]+($m), $date[0] +($j), $date[2]+($a)));
	}
}
?>